
package com.cctv.ppm.schema.ppm_commondatatypes._0;

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;


/**
 * 变更单类型
 * 
 * <p>BroadcastListChangeInfoType complex type的 Java 类。
 * 
 * <p>以下模式片段指定包含在此类中的预期内容。
 * 
 * <pre>
 * &lt;complexType name="BroadcastListChangeInfoType"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="ChangeNotifincationID" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
 *         &lt;element name="BroadcastListID" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListIDType"/&gt;
 *         &lt;element name="ChangeApplyPerson" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}UserInfoType"/&gt;
 *         &lt;element name="ChangeApplyDate" type="{http://www.w3.org/2001/XMLSchema}date"/&gt;
 *         &lt;element name="ChangeTypes"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="ChangeType" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListChangeType" maxOccurs="unbounded"/&gt;
 *                 &lt;/sequence&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="ChangeReason"&gt;
 *           &lt;simpleType&gt;
 *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string"&gt;
 *               &lt;maxLength value="255"/&gt;
 *             &lt;/restriction&gt;
 *           &lt;/simpleType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="ChannelCode" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}ChannelCodeType"/&gt;
 *         &lt;element name="PlayDate" type="{http://www.w3.org/2001/XMLSchema}date"/&gt;
 *         &lt;element name="ChangeForecast"&gt;
 *           &lt;simpleType&gt;
 *             &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string"&gt;
 *               &lt;maxLength value="255"/&gt;
 *             &lt;/restriction&gt;
 *           &lt;/simpleType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="ChangeDesc" type="{http://www.w3.org/2001/XMLSchema}string"/&gt;
 *         &lt;element name="ChangeOriginItems"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="ChangeOriginItem" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListItemType" maxOccurs="unbounded"/&gt;
 *                 &lt;/sequence&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *         &lt;element name="ChangeTargetItems"&gt;
 *           &lt;complexType&gt;
 *             &lt;complexContent&gt;
 *               &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *                 &lt;sequence&gt;
 *                   &lt;element name="ChangeTargetItem" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListItemType" maxOccurs="unbounded"/&gt;
 *                 &lt;/sequence&gt;
 *               &lt;/restriction&gt;
 *             &lt;/complexContent&gt;
 *           &lt;/complexType&gt;
 *         &lt;/element&gt;
 *       &lt;/sequence&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BroadcastListChangeInfoType", propOrder = {
    "changeNotifincationID",
    "broadcastListID",
    "changeApplyPerson",
    "changeApplyDate",
    "changeTypes",
    "changeReason",
    "channelCode",
    "playDate",
    "changeForecast",
    "changeDesc",
    "changeOriginItems",
    "changeTargetItems"
})
public class BroadcastListChangeInfoType {

    @XmlElement(name = "ChangeNotifincationID", required = true)
    protected String changeNotifincationID;
    @XmlElement(name = "BroadcastListID", required = true)
    protected String broadcastListID;
    @XmlElement(name = "ChangeApplyPerson", required = true)
    protected UserInfoType changeApplyPerson;
    @XmlElement(name = "ChangeApplyDate", required = true)
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar changeApplyDate;
    @XmlElement(name = "ChangeTypes", required = true)
    protected BroadcastListChangeInfoType.ChangeTypes changeTypes;
    @XmlElement(name = "ChangeReason", required = true)
    protected String changeReason;
    @XmlElement(name = "ChannelCode", required = true)
    protected String channelCode;
    @XmlElement(name = "PlayDate", required = true)
    @XmlSchemaType(name = "date")
    protected XMLGregorianCalendar playDate;
    @XmlElement(name = "ChangeForecast", required = true, nillable = true)
    protected String changeForecast;
    @XmlElement(name = "ChangeDesc", required = true, nillable = true)
    protected String changeDesc;
    @XmlElement(name = "ChangeOriginItems", required = true)
    protected BroadcastListChangeInfoType.ChangeOriginItems changeOriginItems;
    @XmlElement(name = "ChangeTargetItems", required = true)
    protected BroadcastListChangeInfoType.ChangeTargetItems changeTargetItems;

    /**
     * 获取changeNotifincationID属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getChangeNotifincationID() {
        return changeNotifincationID;
    }

    /**
     * 设置changeNotifincationID属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setChangeNotifincationID(String value) {
        this.changeNotifincationID = value;
    }

    /**
     * 获取broadcastListID属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getBroadcastListID() {
        return broadcastListID;
    }

    /**
     * 设置broadcastListID属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setBroadcastListID(String value) {
        this.broadcastListID = value;
    }

    /**
     * 获取changeApplyPerson属性的值。
     * 
     * @return
     *     possible object is
     *     {@link UserInfoType }
     *     
     */
    public UserInfoType getChangeApplyPerson() {
        return changeApplyPerson;
    }

    /**
     * 设置changeApplyPerson属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link UserInfoType }
     *     
     */
    public void setChangeApplyPerson(UserInfoType value) {
        this.changeApplyPerson = value;
    }

    /**
     * 获取changeApplyDate属性的值。
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getChangeApplyDate() {
        return changeApplyDate;
    }

    /**
     * 设置changeApplyDate属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setChangeApplyDate(XMLGregorianCalendar value) {
        this.changeApplyDate = value;
    }

    /**
     * 获取changeTypes属性的值。
     * 
     * @return
     *     possible object is
     *     {@link BroadcastListChangeInfoType.ChangeTypes }
     *     
     */
    public BroadcastListChangeInfoType.ChangeTypes getChangeTypes() {
        return changeTypes;
    }

    /**
     * 设置changeTypes属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link BroadcastListChangeInfoType.ChangeTypes }
     *     
     */
    public void setChangeTypes(BroadcastListChangeInfoType.ChangeTypes value) {
        this.changeTypes = value;
    }

    /**
     * 获取changeReason属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getChangeReason() {
        return changeReason;
    }

    /**
     * 设置changeReason属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setChangeReason(String value) {
        this.changeReason = value;
    }

    /**
     * 获取channelCode属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getChannelCode() {
        return channelCode;
    }

    /**
     * 设置channelCode属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setChannelCode(String value) {
        this.channelCode = value;
    }

    /**
     * 获取playDate属性的值。
     * 
     * @return
     *     possible object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public XMLGregorianCalendar getPlayDate() {
        return playDate;
    }

    /**
     * 设置playDate属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link XMLGregorianCalendar }
     *     
     */
    public void setPlayDate(XMLGregorianCalendar value) {
        this.playDate = value;
    }

    /**
     * 获取changeForecast属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getChangeForecast() {
        return changeForecast;
    }

    /**
     * 设置changeForecast属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setChangeForecast(String value) {
        this.changeForecast = value;
    }

    /**
     * 获取changeDesc属性的值。
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getChangeDesc() {
        return changeDesc;
    }

    /**
     * 设置changeDesc属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setChangeDesc(String value) {
        this.changeDesc = value;
    }

    /**
     * 获取changeOriginItems属性的值。
     * 
     * @return
     *     possible object is
     *     {@link BroadcastListChangeInfoType.ChangeOriginItems }
     *     
     */
    public BroadcastListChangeInfoType.ChangeOriginItems getChangeOriginItems() {
        return changeOriginItems;
    }

    /**
     * 设置changeOriginItems属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link BroadcastListChangeInfoType.ChangeOriginItems }
     *     
     */
    public void setChangeOriginItems(BroadcastListChangeInfoType.ChangeOriginItems value) {
        this.changeOriginItems = value;
    }

    /**
     * 获取changeTargetItems属性的值。
     * 
     * @return
     *     possible object is
     *     {@link BroadcastListChangeInfoType.ChangeTargetItems }
     *     
     */
    public BroadcastListChangeInfoType.ChangeTargetItems getChangeTargetItems() {
        return changeTargetItems;
    }

    /**
     * 设置changeTargetItems属性的值。
     * 
     * @param value
     *     allowed object is
     *     {@link BroadcastListChangeInfoType.ChangeTargetItems }
     *     
     */
    public void setChangeTargetItems(BroadcastListChangeInfoType.ChangeTargetItems value) {
        this.changeTargetItems = value;
    }


    /**
     * <p>anonymous complex type的 Java 类。
     * 
     * <p>以下模式片段指定包含在此类中的预期内容。
     * 
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
     *       &lt;sequence&gt;
     *         &lt;element name="ChangeOriginItem" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListItemType" maxOccurs="unbounded"/&gt;
     *       &lt;/sequence&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "changeOriginItem"
    })
    public static class ChangeOriginItems {

        @XmlElement(name = "ChangeOriginItem", required = true)
        protected List<BroadcastListItemType> changeOriginItem;

        /**
         * Gets the value of the changeOriginItem property.
         * 
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the changeOriginItem property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getChangeOriginItem().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link BroadcastListItemType }
         * 
         * 
         */
        public List<BroadcastListItemType> getChangeOriginItem() {
            if (changeOriginItem == null) {
                changeOriginItem = new ArrayList<BroadcastListItemType>();
            }
            return this.changeOriginItem;
        }

    }


    /**
     * <p>anonymous complex type的 Java 类。
     * 
     * <p>以下模式片段指定包含在此类中的预期内容。
     * 
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
     *       &lt;sequence&gt;
     *         &lt;element name="ChangeTargetItem" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListItemType" maxOccurs="unbounded"/&gt;
     *       &lt;/sequence&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "changeTargetItem"
    })
    public static class ChangeTargetItems {

        @XmlElement(name = "ChangeTargetItem", required = true)
        protected List<BroadcastListItemType> changeTargetItem;

        /**
         * Gets the value of the changeTargetItem property.
         * 
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the changeTargetItem property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getChangeTargetItem().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link BroadcastListItemType }
         * 
         * 
         */
        public List<BroadcastListItemType> getChangeTargetItem() {
            if (changeTargetItem == null) {
                changeTargetItem = new ArrayList<BroadcastListItemType>();
            }
            return this.changeTargetItem;
        }

    }


    /**
     * <p>anonymous complex type的 Java 类。
     * 
     * <p>以下模式片段指定包含在此类中的预期内容。
     * 
     * <pre>
     * &lt;complexType&gt;
     *   &lt;complexContent&gt;
     *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
     *       &lt;sequence&gt;
     *         &lt;element name="ChangeType" type="{http://cctv.com/PPM/schema/PPM_CommonDataTypes/0.1}BroadcastListChangeType" maxOccurs="unbounded"/&gt;
     *       &lt;/sequence&gt;
     *     &lt;/restriction&gt;
     *   &lt;/complexContent&gt;
     * &lt;/complexType&gt;
     * </pre>
     * 
     * 
     */
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "changeType"
    })
    public static class ChangeTypes {

        @XmlElement(name = "ChangeType", required = true)
        protected List<String> changeType;

        /**
         * Gets the value of the changeType property.
         * 
         * <p>
         * This accessor method returns a reference to the live list,
         * not a snapshot. Therefore any modification you make to the
         * returned list will be present inside the JAXB object.
         * This is why there is not a <CODE>set</CODE> method for the changeType property.
         * 
         * <p>
         * For example, to add a new item, do as follows:
         * <pre>
         *    getChangeType().add(newItem);
         * </pre>
         * 
         * 
         * <p>
         * Objects of the following type(s) are allowed in the list
         * {@link String }
         * 
         * 
         */
        public List<String> getChangeType() {
            if (changeType == null) {
                changeType = new ArrayList<String>();
            }
            return this.changeType;
        }

    }

}
